﻿using ra2map_plus.data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ra2map_plus
{
    class GlobalDataHolder
    {
        public static readonly string AppRootPath = AppDomain.CurrentDomain.BaseDirectory;

        public static readonly AppConfig DefaultAppConfig;
        public static readonly AppConfig DefaultAppConfigFieldDesc;
        public static readonly Project DefaultProjectDesc;

        public static readonly char OutputDirAndFileSeparator = '<';

        static GlobalDataHolder()
        {
            DefaultAppConfig = new AppConfig();
            DefaultAppConfig.defaultRootIniFile = "map.yrm";
            DefaultAppConfig.defaultIncludeIniDirs.Add("ini");
            DefaultAppConfig.defaultOutputDirs.Add($"dist{OutputDirAndFileSeparator}dist.yrm");
            DefaultAppConfig.defaultDistDir = "dist";
            DefaultAppConfig.defaultDistFileName = "dist.yrm";
            DefaultAppConfig.defaultProjectConfigFileName = "ra2map.json";
            DefaultAppConfig.textEditor = "notepad.exe";

            DefaultAppConfigFieldDesc = new AppConfig();
            DefaultAppConfigFieldDesc.defaultRootIniFile = "默认的合并主文件名";
            DefaultAppConfigFieldDesc.defaultIncludeIniDirs.Add("将要合并的ini文件夹1(仅合并后缀名为ini的文件)");
            DefaultAppConfigFieldDesc.defaultIncludeIniDirs.Add("将要合并的ini文件夹2(若文件名包含test，将只在测试模式下合并此文件)");
            DefaultAppConfigFieldDesc.defaultOutputDirs.Add($"默认的合并后的文件存放位置1(如果想要改变默认的输出文件名，在此文件夹后面添加一个 {OutputDirAndFileSeparator} 然后加上你想要的文件名)");
            DefaultAppConfigFieldDesc.defaultOutputDirs.Add($"默认的合并后的文件存放位置2(路径可以是一个相对于项目的路径，也可以是一个包含盘符的绝对路径，绝对路径写法可以参考项目配置文件里的绝对路径)");
            DefaultAppConfigFieldDesc.defaultDistDir = "历史遗留字段，暂时无用";
            DefaultAppConfigFieldDesc.defaultDistFileName = "默认的输出文件名，如未指定输出文件名，将使用此文件名";
            DefaultAppConfigFieldDesc.defaultProjectConfigFileName = "默认的项目配置文件名";
            DefaultAppConfigFieldDesc.textEditor = "文本编辑器，一般是一个可执行文件(最好带上文件完整路径)，默认是notepad，Windows自带的记事本，如果改了之后不能用，可以考虑改回来";

            DefaultAppConfig.fieldDesc = DefaultAppConfigFieldDesc;

            DefaultProjectDesc = new Project("项目在磁盘中存放的位置，一般也就是本文件存放的文件夹", "默认的合并主文件名", "合并后的输出文件名");
            DefaultProjectDesc.includeIniDirs.Add("将要合并进主文件的ini文件存放位置1(合并顺序与文件名排序一致，a开头的肯定先于b开头的被合并，1开头的肯定先于2开头的被合并)");
            DefaultProjectDesc.includeIniDirs.Add("将要合并进主文件的ini文件存放位置2(如果ini中有相同内容，后合并的会覆盖先合并的，如果文件名包含test，那么该文件将只在测试模式下被合并)");
            DefaultProjectDesc.outputDirs.Add($"合并后的文件存放位置1(如果想要单独指定合并后的输出文件名，在此文件夹后面添加一个 {OutputDirAndFileSeparator} 然后加上你想要的文件名)");
            DefaultProjectDesc.outputDirs.Add("合并后的文件存放位置2(路径可以是一个相对于项目的路径，也可以是一个包含盘符的绝对路径，绝对路径写法可以参考本文件里的绝对路径)");
        }

        public static AppConfig AppConfig { set; get; }
    }
}
